// 引入node.js path module
let path = require("path");
// 引入 node.js glob path module
let glob = require("glob");

//配置pages多页面获取当前文件夹下的html和js
function getEntry(globPath) {
	let entries = {},
		basename,
		tmp,
		pathname,
		appname;

	glob.sync(globPath).forEach(function(entry) {
		basename = path.basename(entry, path.extname(entry));
		// console.log(entry)
		tmp = entry.split("/").splice(-3);
		console.log(tmp);
		pathname = basename; // 正确输出js和html的路径

		// console.log(pathname)
		entries[pathname] = {
			entry: "src/" + tmp[0] + "/" + tmp[1] + "/" + tmp[1] + ".js",
			template: "src/" + tmp[0] + "/" + tmp[1] + "/" + tmp[2],
			title: tmp[2],
			filename: tmp[2]
		};
	});
	entries["index"] = {
		// page 的入口
		entry: "src/main.js",
		// 模板来源
		template: "public/index.html",
		// 在 dist/index.html 的输出
		filename: "index.html",
		// 当使用 title 选项时，
		// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
		title: "Index Page",
		// 在这个页面中包含的块，默认情况下会包含
		// 提取出来的通用 chunk 和 vendor chunk。
		chunks: ["chunk-vendors", "chunk-common", "index"]
	};
	return entries;
}

let pages = getEntry("./src/pages/**?/*.html");

// console.log("pages", pages);
//配置end

module.exports = {
	//禁用eslint在保存时lint代码
	lintOnSave: false,
	// 打包输出位置
	outputDir: "dist/static",
	// 若当前环境为产品环境，则为 “/”(这里没有定义）
	publicPath:
		process.env.NODE_ENV === "production" ? "/natureWeb" : "/natureWeb",
	// 产品模式下，禁止打包 sourceMap
	productionSourceMap: false,
	// 由于是多页面应用，具体的pages由getEntry方法来返回的对象为准。
	pages,
	// 开发环境配置
	devServer: {
		index: "index.html", //默认启动serve 打开page1页面
		open: process.platform === "darwin",
		host: "",
		port: 8088,
		https: false,
		hotOnly: false,
		// 允许外网不同IP的domain访问
		disableHostCheck:true,
		// 设置代理
		// proxy: {},
		before: (app) => {}
	},
	chainWebpack: (config) => {
		config.module
			.rule("images")
			.use("url-loader")
			.loader("url-loader")
			.tap((options) => {
				// 修改它的选项...
				options.limit = 100;
				return options;
			});
		Object.keys(pages).forEach((entryName) => {
			config.plugins.delete(`prefetch-${entryName}`);
		});
		if (process.env.NODE_ENV === "production") {
			config.plugin("extract-css").tap(() => [
				{
					path: path.join(__dirname, "./dist"),
					filename: "css/[name].[contenthash:8].css"
				}
			]);
		}
		// 开启analyzer 分析代码
		if (process.env.NODE_ENV === "analyzer") {
			config
				.plugin("webpack-bundle-analyzer")
				.use(require("webpack-bundle-analyzer").BundleAnalyzerPlugin);
		}
	},
	configureWebpack: (config) => {
		if (process.env.NODE_ENV === "production") {
			// 生产环境修改配置
			console.log("production");
		} else {
			// 开发环境修改配置
			// console.log(config);
			// config.devtool:"cheap-module-eval-source-map" // 默认值 调试组件的话，就改为source-map
			config.devtool = "source-map";
		}
		/*if (process.env.NODE_ENV === "production") {
			config.output = {
				path: path.join(__dirname, "./dist"),
				filename: "js/[name].[contenthash:8].js"
			};
		}*/
	}
};
